// #include<iostream>
// #include<pthread.h>
// #include<unistd.h>
// using namespace std;

// void* run1(void* arg)
// {
//     int count=5;
//     while(count--)
//     {
//         cout<<"new thread :"<<(char* )arg<<endl;
//         sleep(1);
//     }
//     pthread_exit((void*)100);
//     cout<<"退出成功！"<<endl;

// }

// void* run2(void* arg)
// {
//     while(true)
//     {
//         cout<<"new thread :"<<(char* )arg<<endl;
//         sleep(1);
//     }
// }
// int main()
// {
//     //创建线程1，线程2
//     pthread_t thread1;
//     pthread_create(&thread1,nullptr,run1,(void*)"new thread1");
//     pthread_t thread2;
//     pthread_create(&thread2,nullptr,run2,(void*)"new thread2");
//     sleep(3);
//     //取消线程2
//     pthread_cancel(thread2);
//     cout<<"取消成功！"<<endl;

//     //线程等待
//     void *ret1,*ret2;
//     pthread_join(thread1,&ret1);
//     pthread_join(thread2,&ret2);
//     cout<<"等待成功！"<<endl;
//     cout<<"ret1 :"<<(long long)ret1<<";ret2 :"<<(long long)ret2<<endl;

//     return 0;
// }



// #include <iostream>
// #include <unistd.h>
// #include <pthread.h>
// using namespace std;

// void *thread_run(void *arg)
// {
//     printf("%s\n", (char *)arg);
//     return NULL;
// }
// int main(void)
// {
//     //创建线程
//     pthread_t tid;
//     pthread_create(&tid, NULL, thread_run, (void*)"thread1 run...") ;
//     //分离线程
//     pthread_detach(tid);

//     int ret = 0;
//     sleep(1); 
//     if (pthread_join(tid, NULL) == 0)
//     {
//         printf("pthread wait success\n");
//         ret = 0;
//     }
//     else
//     {
//         printf("pthread wait failed\n");
//         ret = 1;
//     }
//     return ret;
// }


__thread int count=100;
#include<iostream>
#include<pthread.h>
using namespace std;

void* run(void* args)
{
    printf("new thread &count : %p\n",&count);

    return nullptr;    
}
int main()
{
    pthread_t tid;
    pthread_create(&tid,nullptr,run,(void*)"newthread");
    pthread_join(tid,nullptr);
    printf("main thread &count : %p\n",&count);
    return 0;
}